package cn.msi.questionnaire.service;

import java.util.Date;
import java.util.List;

import cn.common.util.GeneralUtils;
import cn.msi.project.domain.Index;
import cn.msi.project.mapper.IndexMapper;
import cn.msi.questionnaire.domain.Template;
import cn.msi.questionnaire.mapper.TemplateMapper;
import cn.msi.questionnaire.util.TemplateXMLUtils;

/**
 * 调查问卷模板业务处理类
 * 
 * @author Administrator
 * 
 */
public class TemplateService {

	private TemplateMapper templateMapper;

	private IndexMapper indexMapper;

	/**
	 * 根据项目查询调研问卷模板
	 * 
	 * @param template
	 * @return
	 * @throws Exception
	 */
	public String searchTemplate(Template template) throws Exception {
		return GeneralUtils.easyUI(templateMapper.count(template), templateMapper.selectList(template));
	}

	/**
	 * 查找模板
	 * 
	 * @param template
	 * @return
	 */
	public Template findTemplate(Template template) {
		if (template.getTemplateId() != null) {
			template = templateMapper.selectById(template.getTemplateId());
		}
		return template;
	}

	/**
	 * 保存项目问卷模板
	 * 
	 * @param template
	 */
	public void editTemplate(Template template, String indexText, String[] questionText) {
		template.setTemplateContent(TemplateXMLUtils.createTemplate(indexText, questionText));
		if (template != null && template.getTemplateId() != null) {
			templateMapper.update(template);
		} else {
			int count = templateMapper.count(template);
			if (count == 0) {
				// 默认使用P
				template.setTemplateState("P");
			} else {
				// 未使用C
				template.setTemplateState("C");
			}
			template.setCreateTime(new Date());
			templateMapper.insert(template);
		}
	}

	/**
	 * 删除
	 * 
	 * @param template
	 */
	public void deleteTemplate(Template template) {
		Template t = new Template();
		t.setTemplateId(template.getTemplateId());
		t.setTemplateState("D");
		templateMapper.update(t);
	}

	/**
	 * 启用模板
	 * 
	 * @param template
	 */
	public void enableTemplate(Template template) {
		templateMapper.updateByProjectId(template.getProjectId());
		// 模板启用
		Template t = new Template();
		t.setTemplateId(template.getTemplateId());
		t.setTemplateState("P");
		templateMapper.update(t);
	}

	/**
	 * 生成问卷模板
	 * 
	 * @param template
	 * @return
	 */
	public String findContent(Template template) {
		String content = "";
		if (template.getTemplateId() != null) {
			template = templateMapper.selectById(template.getTemplateId());
			content = TemplateXMLUtils.createTemplate(template.getTemplateContent());
		} else {
			// 获得项目指标
			List<Index> indexList = indexMapper.selectListByProject(template.getProjectId());
			content = TemplateXMLUtils.createTemplate(indexList);
		}
		return content;
	}

	public void setTemplateMapper(TemplateMapper templateMapper) {
		this.templateMapper = templateMapper;
	}

	public void setIndexMapper(IndexMapper indexMapper) {
		this.indexMapper = indexMapper;
	}
}
